<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>22.5.移动端网页特效-触摸事件对象-click延迟方案封装函数</title>

</head>

<body>
    <script>
        // 封装tap，解决click 300ms延时
        function tap(obj, callback) {
            var isMove = false;
            var startTime = 0; // 记录触摸时候的时间变量
            obj.addEventListener('touchstart', function (e) {
                startTime = Date.now(); // 记录触摸时间
            });
            obj.addEventListener('touchmove', function (e) {
                isMove = true; // 看是否滑动，优化的算拖拽，不算点击
            });
            obj.addEventListener('touchend', function (e) {
                if (!isMove && (Date.now() - startTime) < 150) { // 如果手指触摸和离开时间小于150ms 算点击
                    callback && callback(); // 执行回调函数
                }
                isMove = false; // 取反 重置
                startTime = 0;
            });
        }
        // 调用
        tap(div, function () {
            //执行代码
        });
    </script>
</body>

</html>